﻿using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
using System.Xml;

namespace skydream
{
    /// <summary>
    /// XML配置文件服务
    /// </summary>
    public class XmlHelp
    {
        //
        // 摘要:
        //     取得规定位置的Xml文件的属性，（文件的全路径,所需要的位置）,
        //     第一行为返回的内容，如何第一行为错误信息，第二行为内容
        //      
        // 返回结果:
        //     返回第一行为返回的内容，如何第一行为错误信息，第二行为内容
        /// <summary>
        /// 
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="position"></param>
        /// <returns></returns>
        public static string[] getXmlText(string filename, int position)
        {
            bool bexit = File.Exists(filename);
            string[] str = new string[2] { "", "" };
            if (bexit)
            {
                try
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(filename);
                    XmlNode node = doc.SelectSingleNode("Server");
                    XmlNodeList list = node.ChildNodes;
                    str[1] = list[position].InnerText;
                }
                catch (Exception ee)
                {
                    str[0] = ee.Message;
                }
            }
            else
            {
                str[0] = "没有找到指定的文件！";
            }
            return str;
        }
        //
        // 摘要:
        //     取得规定位置的Xml文件的属性，（文件的全路径,节点的名称,所需要的位置）
        //     第一行为返回的内容，如何第一行为错误信息，第二行为内容
        //      
        // 返回结果:
        //     返回第一行为返回的内容，如何第一行为错误信息，第二行为内容
        /// <summary>
        /// 
        /// </summary>
        /// <param name="filename"></param>
        /// <param name="nodeName"></param>
        /// <param name="position"></param>
        /// <returns></returns>
        public static string[] getXmlText(string filename,string nodeName,int position)
        {
            bool bexit=File.Exists(filename);
            string[] str = new string[2] { "", "" };
            if (bexit)
            {
                try
                {
                    XmlDocument doc = new XmlDocument();
                    doc.Load(filename);
                    XmlNode node = doc.SelectSingleNode(nodeName);
                    XmlNodeList list = node.ChildNodes;
                    str[1] = list[position].InnerText;
                }
                catch (Exception ee)
                {
                    str[0] = ee.Message;
                }
            }
            else
            {
                str[0] = "没有找到指定的文件！";
            }
            return str;
        }
        /// <summary>
        /// 修改规定位置的Xml文件的属性，（文件的全路径,节点的名称,准确位置，需要修改的内容）
        /// 字符数据，第一行为返回的内容，如何第一行为成功信息，第二行为错误内容
        /// 默认的节点信息
        /// </summary>
        /// <param name="position"></param>
        /// <returns></returns>
        public static string[] modifyXmlPosit(string filename, int position, string text)
        {
            bool bexit = File.Exists(filename);
            string[] str = new string[2] { "", "" };
            if (bexit)
            {
                try
                {
                    //需要修改的为5.6.7.8行
                    XmlDataDocument doc = new XmlDataDocument();
                    doc.Load(filename);
                    XmlNode node = doc.SelectSingleNode("Server");
                    XmlNodeList list = node.ChildNodes;
                    XmlElement ex1 = (XmlElement)list[position];//xml第一节点
                    ex1.InnerText = text;
                    doc.Save(filename);
                    str[0] = "修改成功！";
                }
                catch (Exception ee)
                {
                    str[1] = "修改失败,节点不存在或者是服务名称有误。" + ee.Message;
                }
            }
            else
            {
                str[1] = "修改失败,没有找到指定的文件！";
            }
            return str;
        }
        /// <summary>
        /// 修改规定位置的Xml文件的属性，（文件的全路径,节点的名称,准确位置，需要修改的内容）
        /// 字符数据，第一行为返回的内容，如何第一行为成功信息，第二行为错误内容
        /// </summary>
        /// <param name="position"></param>
        /// <returns></returns>
        public static string[] modifyXmlPosit(string filename, string nodeName, int position,string text)
        {
            bool bexit=File.Exists(filename);
            string[] str = new string[2] { "", "" };
            if (bexit)
            {
                try
                {
                    //需要修改的为5.6.7.8行
                    XmlDataDocument doc = new XmlDataDocument();
                    doc.Load(filename);
                    XmlNode node = doc.SelectSingleNode(nodeName);
                    XmlNodeList list = node.ChildNodes;
                    XmlElement ex1 = (XmlElement)list[position];//xml第一节点
                    ex1.InnerText = text;
                    doc.Save(filename);
                    str[0] = "修改成功！";
                }
                catch (Exception ee)
                {
                    str[1] = "修改失败,节点不存在或者是服务名称有误。" + ee.Message;
                }
            }
            else
            {
                str[1] = "修改失败,没有找到指定的文件！";
            }
            return str;
        }

    }
}
